/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package managers;

import DAO.TareaDAO;
import JPA.JPATareaDAO;
import domain.Entity.EntityTarea;
import domain.Entity.EntityTrabajador;
import java.util.Date;
import java.util.List;

/**
 *
 * @author jorge
 */
public class TareaManager implements ITareaManager {
    
     private TareaDAO tarea;
     private static TareaManager instance = null;
        
  	
        public static synchronized TareaManager getInstance(){
		if(instance == null){
			instance = new TareaManager();
			return instance;
		}
		else
			return instance;
	}
        
	
	private TareaManager(){
		this.tarea =new JPATareaDAO();
	}

        public void addTarea(EntityTarea et){
    	 this.tarea.anadirTarea(et);
        }
        
        public EntityTarea getPorNombreYProyecto(String nombre,long idProyecto){
         return  this.tarea.obtenerTarea(nombre,idProyecto);  
        }

        public List mostrarTareasProyecto(Long idProyecto) {
            return this.tarea.tareasProyecto(idProyecto);
        }
        
        public void borrarTarea(long idTarea){
            this.tarea.borrarTarea(idTarea);
        }
        
         public void modificarTarea(EntityTarea et){
            this.tarea.modificarTarea(et);
        }
         
        public EntityTarea getPorID(long idTarea){
            return this.tarea.getTarea(idTarea);
        }
        
        public void asignarTarea(EntityTarea et){
            this.tarea.asignarTarea(et);
        }
        
        public List mostrarTrabajadoresTarea(long idTarea){
           return this.tarea.trabajadoresTarea(idTarea);
        }
        
        public List mostrarTareasTrabajador(long dni){
           return this.tarea.TareasDelTrabajador(dni);
        }
        
        public void quitarTarea(EntityTarea et){
            this.tarea.quitarTarea(et);
        }
        
        public List trabajo(Date fechaIni,EntityTarea tarea,Date fechaFin){
            return this.tarea.trabajo(fechaIni, tarea, fechaFin);
            
        }
        
         public List trabajoTrabajador(Date fechaIni,EntityTarea tarea,EntityTrabajador trabajador,Date fechaFin){
            return this.tarea.trabajoTrabajador(fechaIni, tarea, trabajador, fechaFin);
            
        }
         
         public void completar(EntityTarea et){
             this.tarea.completar(et);
         }
         
         public List TareasTrabajadorEtiqueta(EntityTrabajador etr,String etiqueta){
            return this.tarea.TareasDelTrabajadorEtiqueta(etr, etiqueta);
        }
         
         public List TareasProyectoEtiqueta(long idProyecto,String etiqueta){
            return this.tarea.tareasProyectoEtiqueta(idProyecto, etiqueta);
        }
         
         public void etiquetar(EntityTarea et){
             this.tarea.etiquetar(et);
         } 
}        
